#include<iostream>
#include<vector>
#include<queue>

using namespace std;

int get(int a)
{
	int res = 0;
	while ((a & 1) == 0)
	{
		res++;
		a >>= 1;
	}
	return res;
}

void func1()
{
	int q;
	cin >> q;
	while (q--)
	{
		int n,a;
		cin >> n;
		int res = 0;
		for (int i = 0; i < n; i++)
		{
			cin >> a;
			res ^= get(a);
		}
		if (res)	cout << "first" << endl;
		else cout << "second";
	}
}

void func2()
{
	int n, k, m;
	cin >> n >> k >> m;
	vector<int> a(k);
	vector<int> st(n,-1);
	for (int i = 0; i < k; i++)
		cin >> a[i];

	st[0] = 0;
	queue<pair<int,int>> q;
	q.push({0,0});
	while (q.size())
	{
		auto top = q.front();
		q.pop();
		for (auto it : a)
		{
			int ne = (it + top.first) % n;
			if (st[ne] == -1)
			{
				st[ne] = top.second + 1;
				q.push({ne,top.second + 1});
			}
		}
	}
	
	int t;
	while (m--)
	{
		cin >> t;
		cout << st[t] << endl;
	}
}

int main()
{
	func2();
	return 0;
}